package Map;

import java.util.*;

/**
 * Map提供了三种遍历方式:
 * 1:遍历所有的key
 * 2:遍历每一组键值树
 * 3:遍历所有的value(相对不常用)
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文", 99);
        map.put("数学", 98);
        map.put("英语", 64);
        map.put("化学", 92);
        map.put("物理", 45);
        System.out.println(map);

        /*
        遍历所有key
        Set keySet()
        将当前Map中所有的key以一个Set集合形式返回
         */
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println("key:" + key);
        }
            /*
                Set entrySet()
                将当前Map中每一组键值对以一个Entry实例形式表示并存入一个Set集合后将其返回
             */
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        for (Map.Entry<String, Integer> e : entrySet) {
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key + ":" + value);
        }

        /*
        Collections values()
        将当前Map中所有的value以一个集合形式返回
         */
        Collection<Integer> values = map.values();
        for (Integer value : values) {
            System.out.println("value:" + value);
        }

        /*
             JDK8之后遍历集合和Map时可以使用forEach方法利用lambda进行遍历
         */
        map.forEach(
                (k,v)-> System.out.println(k+","+v)
        );

        Collection<String> c=new ArrayList<>();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.forEach(
                System.out::println
        );

    }
}
